/**
 * @file turn_on.c
 * @author pen (2172407607@qq.com)
 * 
 * @brief 开机画面的实现和画面的切换
 * 
 * @version 0.1
 * @date 2025-10-16
 * 
 * 
 */

#include "turn_on.h"


/**
 * @brief 开机定时器回调函数
 * 
 * 2秒后删除开机画面
 * 切换到主界面
 * 删除定时器
 * 
 * @param timer 
 */
static void boot_timer_cb(lv_timer_t *timer)
{
    // 从定时器的用户数据中获取开机画面容器指针
    lv_obj_t *boot_cont = timer->user_data;        
    
    // 是否有效
    if(boot_cont && lv_obj_is_valid(boot_cont))         
    {
        // 删除开机画面
        lv_obj_del(boot_cont);
    }
    
    // 显示主界面
    show_main();

    // 删除定时器
    lv_timer_del(timer);
}

/**
 * @brief 显示开机画面
 * 
 * 创建一个容器作为开机画面的背景
 * 居中显示开机图片，定时器2秒后切换到主机面
 * 
 */
void show_boot_screen() 
{
    // 创建开机画面容器
    lv_obj_t *boot_cont = lv_obj_create(lv_scr_act());
    if(!boot_cont)
    {
        return;
    } 
    
    // 设置容器大小和背景颜色
    lv_obj_set_size(boot_cont, 800, 480);
    lv_obj_set_style_bg_color(boot_cont, lv_color_hex(0x000000), 0);
    
    // 创建并设置logo图片
    lv_obj_t *logo = lv_img_create(boot_cont);
    if(logo) 
    {
        lv_img_set_src(logo, "S:/pen/showcar/pic/boot_logo.png");        //设置源路径 
        lv_obj_align(logo, LV_ALIGN_CENTER, 0, 0);
    }
    
    // 创建定时器，2秒后切换到主界面
    lv_timer_create(boot_timer_cb, 2000, boot_cont);
}